<?php
require_once 'Zend/Controller/Action.php';
require_once 'Examenes/ExamenAplicado.class.php';
require_once 'Reactivos/ReactivoProvider.class.php';

class ReporteAdministrador_ConsultaController extends Zend_Controller_Action {
	public function preDispatch() {
		$auth = Zend_Auth :: getInstance();
		if (!$auth->hasIdentity()) {
			$this->_redirect('acceso/auth/login');
		}
		$zend_acl = Gea_Zend_Acl_Factory :: getInstance();
		if (!$zend_acl->isAllowed($auth->getIdentity()->ROL_ID, $this->getRequest()->getModuleName())) {
			$this->_redirect('/');
		}
	}

	public function init() {
		$registry = Zend_Registry :: getInstance();
		$this->smarty = $registry->smarty;
		$this->smarty->assign('moduleName', $this->getRequest()->getModuleName());
		$this->smarty->assign('controllerName', $this->getRequest()->getControllerName());
		$this->smarty->assign('actionName', $this->getRequest()->getActionName());
		$this->smarty->assign('baseUrl', $this->getRequest()->getBaseUrl());
		$this->smarty->assign('subtitulo', 'Examenes Realizados');
	}
	public function indexAction() {
		$registry = Zend_Registry :: getInstance();
			$config = $registry->config;
		$db = Zend_Db :: factory('Mysqli', array (
				'host' => $config->database->host,
				'username' => $config->database->username,
				'password' => $config->database->password,
				'dbname' => $config->database->name
			));
		try{
			if($this->getRequest()->getParam('alumno')!=""){
				//$reporte = new Zend_Session_Namespace('reporte_Administrador_ConsultaController');
				//$reporte->alumno = $this->getRequest()->getParam('alumno');
				//$alumno=$reporte->alumno;
				$alumno = $this->getRequest()->getParam('alumno');
			}
			else{
				throw new Exception("Este campo no puede ir en blanco.");
			}
			$nombreArray = explode(" ",$alumno);
			if(count($nombreArray)==3 && $nombreArray[0]!=""&& $nombreArray[1]!=""&& $nombreArray[2]!=""){
				$row = $db->fetchRow('SELECT ' .
					'USUARIO_ID AS ID ' .
					'FROM ' .
					'USUARIO WHERE USUARIO_NOMBRE = "' . $nombreArray[0].'" AND USUARIO_APELLIDO_PATERNO = "' . $nombreArray[1].'" AND USUARIO_APELLIDO_MATERNO= "'.$nombreArray[2].'"');
				$id=$row['ID'];
				if(!isset($row))
				{
					throw new Exception("Alumno Inexistente.");
				}
				$rs = $db->fetchAssoc('SELECT ' .
					'EU.EXAMEN_USUARIO_ID AS ID,'.
					'EU.EXAMEN_USUARIO_DATE AS DATE,' .
					'EU.EXAMEN_USUARIO_RESULTADO AS R,'.
					'E.EXAMEN_NOMBRE AS NOMBRE,' .
					'E.EXAMEN_DESCRIPCION AS DESCRIPCION '.
					'FROM ' .
					'EXAMEN_USUARIO EU INNER JOIN EXAMEN E ON (EU.EXAMEN_ID = E.EXAMEN_ID) WHERE EU.USUARIO_ID = '.$id.' ORDER BY EU.EXAMEN_USUARIO_ID');
				$arrayExamenesAplicados = array ();
				foreach ($rs as $row) {
					$examenAplicado = new ExamenAplicado();
					$examenAplicado->setId($row['ID']);
					$examenAplicado->setNombre($row['NOMBRE']);
					$examenAplicado->setDescripcion($row['DESCRIPCION']);
					$examenAplicado->setFecha($row['DATE']);
					$examenAplicado->setResultado($row['R']);
					$arrayExamenesAplicados[] = $examenAplicado;
				}
				$this->smarty->assign('examenesaplicados', $arrayExamenesAplicados);
				$this->smarty->displayInMasterPage('reporteAdministrador__Consulta_index.tpl', 'MasterPage.tpl');
			}
			else{
				throw new Exception("Se debe introducir: Nombre ApellidoPaterno ApellidoMaterno.");
			}
		}
		catch (Exception $e){
			$this->smarty->assign('mensajeError', "Error ! :" . $e->getMessage());
			$this->smarty->displayInMasterPage('reporteAdministrador_index_index.tpl', 'MasterPage.tpl');
		}
	}

	public function mostrarAction() {
		$registry = Zend_Registry :: getInstance();
			$config = $registry->config;
		$db = Zend_Db :: factory('Mysqli', array (
				'host' => $config->database->host,
				'username' => $config->database->username,
				'password' => $config->database->password,
				'dbname' => $config->database->name
			));
		$examenusuarioId = $this->getRequest()->getParam('examenusuarioId');
		$rs = $db->fetchAssoc('SELECT ' .
			'REACTIVO_ID AS ID,'.
			'REACTIVO_TIPO AS TIPO,'.
			'RESPUESTA_REACTIVO_EXAMEN_USUARIO_ID AS OID '.
			'FROM ' .
			'REACTIVO_EXAMEN_USUARIO WHERE EXAMEN_USUARIO_ID = '.$examenusuarioId);
		$reactivos=array();
		$respuestasusuario = array();
		foreach($rs as $row){
			$reactivos[]=ReactivoProvider::getReactivoById($row['ID']);
			switch($row['TIPO']){
				case '1' :
				case '2':
					$rs = $db->fetchAssoc('SELECT ' .
						'RO.REACTIVO_OPCIONES_RESPUESTA AS ROR '.
						'FROM ' .
						'REACTIVO_OPCIONES RO INNER JOIN RESPUESTA_REACTIVO_EXAMEN_USUARIO_has_REACTIVO_OPCIONES OT ON (RO.REACTIVO_OPCIONES_ID = OT.REACTIVO_OPCIONES_ID) WHERE OT.RESPUESTA_REACTIVO_EXAMEN_USUARIO_ID = '.$row['OID']);
					$respuestas=array();
					foreach($rs as $r){
						$respuestas[]=$r['ROR'];
					}
					$respuestasusuario[]=$respuestas;
					break;
				case '3' :
					$rs = $db->fetchAssoc('SELECT ' .
						'RESPUESTA_EXAMEN_CANEVA_RESPUESTA AS R '.
						'FROM ' .
						'RESPUESTA_EXAMEN_CANEVA WHERE RESPUESTA_REACTIVO_EXAMEN_USUARIO_ID = '.$row['OID']);
					$respuestas=array();
					foreach($rs as $r){
						$respuestas[]=$r['R'];
					}
					$respuestasusuario[]=$respuestas;
					break;
				case '4' :
					$rs = $db->fetchAssoc('SELECT ' .
						'RESPUESTA_EXAMEN_VF_RESPUESTA AS R '.
						'FROM ' .
						'RESPUESTA_EXAMEN_VF WHERE RESPUESTA_REACTIVO_EXAMEN_USUARIO_ID = '.$row['OID']);
					$respuestas=array();
					foreach($rs as $r){
						if($r['R']=='1')
							$respuesta = 'Verdadero';
						else
							$respuesta = 'Falso';
						$respuestas[]=$respuesta;
					}
					$respuestasusuario[]=$respuestas;
					break;
			}
		}
		$this->smarty->assign('reactivos', $reactivos);
		$this->smarty->assign('respuestas', $respuestasusuario);
		$reporte = new Zend_Session_Namespace('reporte_Administrador_ConsultaController');
		//$this->smarty->assign('alumno', $reporte->alumno);
		$this->smarty->displayInMasterPage('reporteAdministrador_Consulta_mostrar.tpl', 'MasterPage.tpl');
	}
}
?>